Many users turn to the Internet as a source of news. Millions of web pages are available as a source of news content. These web pages take many forms, including, for example, articles, blurbs, and web logs (“blogs”), among others. In general, news content is published by inserting it into a web page (e.g., coding it into a HyperText Markup Language (HTML) file), which can then be viewed using a web browser.
However, there are drawbacks to this approach. Users who wish to see content from a variety of sources must typically visit many different web sites. In addition, if the user later wants to obtain the most current content from all the sources, she must visit all the different web sites again. This is very time consuming, especially if the user is interested in many different types of content and/or sources.
One possible solution is a software application that automatically visits a number of web sites that provide news content. The application analyzes the content found at each of the web sites, determines whether the content has changed, and notifies the user as to such changes. The user can then visit the web sites having newly-updated content. Alternatively, the application can automatically extract the updated content and present directly to the user. Unfortunately, in many cases it is very difficult (if not impossible) to identify the news content of a web page without a priori knowledge of the structure of the web page.
In response, “feeds” have been developed as a way to publish news content in a structured format that facilitates identification and analysis. A feed (also known as a “news feed” or “blog feed”) can contain articles (content items), meta-data about the articles (e.g., title, date, and author), and/or meta-data about the feed itself (e.g., title, URL, and last-updated timestamp). Some feeds are described by Resource Description Framework (RDF) statements and/or encoded using extended Markup Language (XML) (such as, e.g., the XML syntax RDF/XML). These features of feeds make it easier for applications to automatically collect and evaluate news content for presentation to the user.
The term “syndication XML” refers to XML that has been developed for feeds, such as Atom and RSS (“Really Simple Syndication,” “Rich Site Summary,” or “RDF Site Summary”). Since the general structure of a feed is known, it is possible to identify the news content within it. Software applications have been developed that work with content published using syndication XML.
One feature of such applications enables a user to view the content of a feed in a way that is more user-friendly than a raw XML (text) file. (Syndication XML identifies content, without requiring that the content be displayed in any particular way.) Applications and/or application handlers, commonly known as “feed viewers,” “feed readers,” or “feed aggregators,” are capable of reading the syndication XML and presenting it to the user. These applications, which can be implemented as (for example) stand-alone applications or web browser plug-ins, often contain useful user interface controls for facilitating navigation, searching, and the like with respect to news feeds. Another feature of many such feed viewers is “aggregation,” which enables a user to specify multiple feeds and integrate their content into a single feed.
While feeds have made it easier to access news content, existing techniques for detecting, managing, and presenting news feeds have some disadvantages. One problem is that users may be unable to determine whether a server is publishing a feed. Then, once a feed has been found and navigated to, the web browser will often prompt the user to save the feed to disk or display it as raw text, rather than display it in a user-friendly way. Another problem is that even if a feed can be displayed in a user-friendly way, this display often cannot be modified based on user preferences. Yet another problem is that if a user views a feed using multiple feed viewers (for example, on different computers), the state of the user's interaction with the feed (for example, which articles have been read) is inconsistent across the viewers. One viewer is not aware of the fact that the user has already viewed a particular article in another viewer. What is needed is a software application and/or software architecture that solves these problems.